The present invention is a computer software framework and method for managing communication flow between a user interface and a computer application performing a task comprising a plurality of steps. More specifically, the framework and method abstract the communication between the application and a user interface on a step-wise basis, thereby coupling each step with specific input from and output to the user interface.
Computer applications exist that perform a business process (i.e., task), which usually can be broken into individual components (i.e., steps). These applications often contain logic that controls the sequence in which the steps are carried out. Furthermore, these applications, which may reside locally or on a network server, frequently communicate with a user through a user interface such as a terminal or workstation. The user provides information or directions (i.e., a progression input) to the application, and the application provides output to the user interface, for example pages or text to be displayed on a screen. In order to ensure continuity in executing the task, it is important that progression input is received by and output is sent to the user interface in the logical sequence associated with the steps of the task being carried out by the business application. The method and framework of the present invention manages communication flow between the user interface and the computer application performing the task comprising a plurality of steps. More specifically, the framework abstracts the communication functions from the business process functions. In other words, the framework encapsulates the process for communication of information to and from a user interface separate and apart from the underlying business process (i.e., task and associated steps) being carried out by an application, thus creating a set of uniform APIs such that the presentation functions can be reused to link a variety of different applications and/or tasks with a variety of different user interfaces (e.g., a web browser, an interactive voice response (IVR) console, etc.). The result is easier navigation within the application for the user, improved continuity in execution of the application, code reusability, and availability of a consistent set of application programming interfaces (APIs) to application developers regardless of the computer application, task, steps or user interface.